package managedbeans;

import java.util.Collections;
import java.util.List;

import businedelegate.BusineDelegatePalc;
import entities.vo.ArticuloPalcVO;

public class ManagedBeanPalc {

	private Long					numeroPedido;
	private Long					numeroCoruna;
	private List<ArticuloPalcVO> 	articulos;
	private Integer					articuloReferencia;
	private ArticuloPalcVO 			articuloSeleccionado;
	private BusineDelegatePalc		busineDelegate;
	private Integer					minimum;
	private Integer					maximum;
	
	
	private String					messagesAgregarArticulo;
	public ManagedBeanPalc() {
		busineDelegate = BusineDelegatePalc.getInstance(); 
		articulos = busineDelegate.getArticulosPALC();
		numeroPedido = getBusineDelegate().getNroNuevoPedido();
		minimum = 0;
		maximum = 9999999;
		messagesAgregarArticulo = "";
	}
	
	public Integer getMaximum() {
		return maximum;
	}
	public Integer getMinimum() {
		return minimum;
	}
	public void setMinimum(Integer minimum) {
		this.minimum = minimum;
	}
	public void setMaximum(Integer maximum) {
		this.maximum = maximum;
	}
	public void eliminarArticulo(){
		getArticulos().remove(articuloSeleccionado);
	}
	public List<ArticuloPalcVO> getArticulos() {
		return articulos;
	}
	public ArticuloPalcVO getArticuloSeleccionado() {
		return articuloSeleccionado;
	}
	public void setArticuloSeleccionado(ArticuloPalcVO articuloSeleccionado) {
		getArticulos().remove(articuloSeleccionado);
	}
	public String generarPedido() {
		String salida="sucess";
		try{
			//getBusineDelegate().generarPedido(articulos,numeroPedido,3L);
			getBusineDelegate().generarPedido(articulos,numeroPedido,numeroCoruna);
		}catch (Exception e) {
			salida = "error";
		}
		return salida;
    }

	
	public Long getNumeroPedido() {
		return numeroPedido;
	}
	public void setNumeroPedido(Long numeroPedido) {
		this.numeroPedido = numeroPedido;
	}
	public Integer getArticuloReferencia() {
		return articuloReferencia;
	}
	public void setArticuloReferencia(Integer articuloReferencia) {
		this.articuloReferencia = articuloReferencia;
	}
	public void agregarArticulo(){
		if(articuloReferencia!=null){
			ArticuloPalcVO articuloPalcVO = getBusineDelegate().agregarArticuloPalc(articuloReferencia);
			if(articuloPalcVO!=null){
				addArticulo(articuloPalcVO);
			}else{
				messagesAgregarArticulo="No se pudo agregar el articulo de referencia "+articuloReferencia;
			}
		articuloReferencia=null;
		}else{
			messagesAgregarArticulo="la referencia debe tener un valor";
		}
	}
	private void addArticulo(ArticuloPalcVO articuloPalcVO) {
		if(!articulos.contains(articuloPalcVO)){
			articulos.add(articuloPalcVO);
			Collections.sort(articulos);
			messagesAgregarArticulo="";
		}
	}

	public String getMessagesAgregarArticulo() {
		return messagesAgregarArticulo;
	}
	public void setMessagesAgregarArticulo(String messagesAgregarArticulo) {
		this.messagesAgregarArticulo = messagesAgregarArticulo;
	}
	public BusineDelegatePalc getBusineDelegate() {
		return busineDelegate;
	}
	public Long getNumeroCoruna() {
		return numeroCoruna;
	}
	public void setNumeroCoruna(Long numeroCoruna) {
		this.numeroCoruna = numeroCoruna;
	}
}
